
package Controlador;

import Modelo.Listas;
import Modelo.Contrato;
import Modelo.Vigilantes;
import Modelo.Clientes;
import Modelo.Validaciones;
import Vista.JFrameClientes;
import Vista.JFrameContrato;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.AWTEventListener;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;


public class ControladorContrato implements ActionListener
{
    private JFrameContrato formContrato;
    private Listas LisCont;
    private Clientes cli;
    private JFrameClientes formClientes;

    public ControladorContrato(Listas LisEmpresa)
    {
        formContrato= new JFrameContrato();
        formClientes= new JFrameClientes();
        formContrato.agregarListener(this);
        formContrato.setVisible(true);
        LisCont= LisEmpresa;
        Enabled(false);
        Visible(false);
        NroContrato();

      formContrato.getTxtCedula().addKeyListener(new KeyAdapter()   
      {                                                          
            @Override
            public void keyTyped (KeyEvent e) 
              {    
                CedulaClientekeyTyped(e);  
               
              }
                 
            @Override
            public void keyPressed(KeyEvent e) 
               {
                  CedulaClientekeyPressed(e); 
                 
               }   
       });  
      
       formContrato.getTxtCantidad().addKeyListener(new KeyAdapter()    
      {                                                          
            @Override
            public void keyTyped (KeyEvent e) 
              {    
                CantidadVigilanteskeyTyped(e);  
               
              }
            @Override
            public void keyPressed(KeyEvent e) 
               {
                  CantidadVigilanteskeyPressed(e); 
                 
               }   
           
      });
       
        formContrato.getTxtCantidadBici().addKeyListener(new KeyAdapter()   
      {                                                          
            @Override
            public void keyTyped (KeyEvent e) 
              {    
                CantidadBicicletakeyTyped(e);  
               
              }

      });
        
        formContrato.getTxtCantidadRadio().addKeyListener(new KeyAdapter() 
      {                                                          
            @Override
            public void keyTyped (KeyEvent e)
              {    
                CantidadRadiokeyTyped(e);  
               
              }
      });
    
        
}

private void CedulaClientekeyTyped(KeyEvent e) {
   String Cadena;
   char Caracter;
   
   Cadena=formContrato.getTxtCedula().getText();
   
   if (Cadena.length()==8) 
   {
     e.consume(); 
     return;
   }   
   
   Caracter=e.getKeyChar();
   if (Caracter<'0' || Caracter > '9') 
     e.consume();  
   
                
            }

private void CedulaClientekeyPressed(KeyEvent e) {
    String Cadena;
    int PosiCli;
    int Opcion;
    
   Cadena=formContrato.getTxtCedula().getText(); 
   if (e.getKeyChar()==10 && Cadena.length() > 0)
    {
      
      PosiCli=LisCont.ExisteCliente(Cadena); 
      if (PosiCli==-1) // si no se encontro
       {
          if (Mensajes.DialogConfirm("¿Desea Agregar Cliente?","Seleccione")==0)
             {
               formClientes.setVisible(true);
               formClientes.getTxtCedulaCliente().setText(Cadena);
               formClientes.getTxtNombreCliente().requestFocusInWindow();
            
             }
            else
                formContrato.getTxtCedula().requestFocusInWindow();
          return;
         }
      
          
      
      if (PosiCli >=0) // se encontro
       {
         String Tipo;
         cli=LisCont.getListaClientes().get(PosiCli); 
         

         formContrato.getTxtNombre().setText(cli.getNombre());
         formContrato.getTxtTipo().setText(cli.getTipo());
         
         Tipo= formContrato.getTxtTipo().getText();
         
         if ( !"Tienda".equals(Tipo))
             Visible(true);
             
         Enabled(true); 
       
         formContrato.getTxtCantidad().requestFocusInWindow();
        
       }  
    }  
                
}

 private void CantidadVigilanteskeyTyped(KeyEvent e) {
   String Cadena;
   char Caracter;
   
   Cadena=formContrato.getTxtCantidad().getText();
   
   if (Cadena.length()==3) 
   {
     e.consume(); 
     return;
   }   

   Caracter=e.getKeyChar();
   if (Caracter<'0' || Caracter > '9')
     e.consume();  
                
            } 
 
  private void CantidadVigilanteskeyPressed(KeyEvent e) {
      String Cadena;
      Cadena=formContrato.getTxtCantidad().getText(); 
   if (Cadena.length() > 0)
        cargo(); 
    
            }
 
 
 private void cargo()
 {
   Float cargo;
   String carg;
   String Cadena= formContrato.getTxtCantidad().getText();
   
   cargo= Float.parseFloat(Cadena)* 1000;
   carg= String.valueOf(cargo); 
   formContrato.getTxtCargo().setText(carg);
 }

 
 private void CantidadBicicletakeyTyped(KeyEvent e) {
   String Cadena;
   char Caracter;
   
   Cadena=formContrato.getTxtCantidadBici().getText();
   
   if (Cadena.length()==3) 
   {
     e.consume();
     return;
   }   
   
   Caracter=e.getKeyChar();
   if (Caracter<'0' || Caracter > '9') 
     e.consume();  
   
               
            }
 
  private void CantidadRadiokeyTyped(KeyEvent e) {
   String Cadena;
   char Caracter;
   
   Cadena=formContrato.getTxtCantidadRadio().getText();
   
   if (Cadena.length()==3)
   {
     e.consume();
     return;
   }   
   
   Caracter=e.getKeyChar();
   if (Caracter<'0' || Caracter > '9') 
     e.consume();  
   
                
            }


 private void Enabled(boolean status) {
     
     formContrato.getTxtCedula().setEnabled(!status);
     formContrato.getTxtCantidadRadio().setEnabled(status);
     formContrato.getTxtCantidadBici().setEnabled(status);
     formContrato.getTxtCantidad().setEnabled(status);
     formContrato.getDatInicio().setEnabled(status);
     formContrato.getDatFinal().setEnabled(status);
    }
 
 private void Visible(boolean status)
 {
     formContrato.getjPanelExtra().setVisible(status);
 }
 

 private void NroContrato()
 {
     
 }
 
 
 private void Limpiar()
{
    formContrato.getTxtCedula().setText("");
    formContrato.getTxtNombre().setText("");
    formContrato.getTxtTipo().setText("");
    formContrato.getTxtCantidad().setText("");
    formContrato.getTxtCantidadBici().setText("");
    formContrato.getTxtCantidadRadio().setText("");
    formContrato.getTxtCargo().setText("");
    formContrato.getTxtCedula().requestFocusInWindow();
    formContrato.getDatInicio().setDate(null);
    formContrato.getDatFinal().setDate(null);
}      

 
 public void Grabar()
 {
     String Cadena;
     Contrato cont=new Contrato();
     
      Cadena=formContrato.getTxtNro().getText();
     if (Cadena.length()==0)
     {  
       Mensajes.Aviso("Numero de Contrato Vacío", "");  
       formContrato.getTxtNro().requestFocusInWindow();
       return;
     } 
     
     Cadena=formContrato.getTxtCedula().getText();
     if (Cadena.length()==0)
     {  
       Mensajes.Aviso("Cedula Vacía", "");  
       formContrato.getTxtCedula().requestFocusInWindow();
       return;
     }  
     
     Cadena=formContrato.getTxtNombre().getText();
     if (Cadena.length()==0)
     {  
       Mensajes.Aviso("Nombre Vacío", "");  
       return;
     }  
     
     Cadena=formContrato.getTxtTipo().getText();
     if (Cadena.length()==0)
     {  
       Mensajes.Aviso("Tipo de Cliente Vacío", "");  
       return;
     }  
     
     Cadena=formContrato.getTxtCantidad().getText();
     if (Cadena.length()==0)
     {  
       Mensajes.Aviso("Cantidad de Vigilantes Vacío", "");  
       formContrato.getTxtCantidad().requestFocusInWindow();
       return;
     }  

      Cadena=formContrato.getTxtNro().getText();
      
      cont.Contrato(formContrato.getTxtNro().getText(),
                    formContrato.getTxtCedula().getText(), 
                    formContrato.getTxtNombre().getText(),
                    formContrato.getTxtTipo().getText(),
                    formContrato.getTxtCantidad().getText(),
                    formContrato.getTxtCantidadBici().getText(),
                    formContrato.getTxtCantidadRadio().getText(),
                    formContrato.getTxtCargo().getText(),
                    formContrato.getDatInicio().getCalendar().getTime(),
                    formContrato.getDatFinal().getCalendar().getTime()); 
                      
      Cadena=formContrato.getTxtNro().getText();

      int PosiCont;
              
      PosiCont =LisCont.ExisteContrato(Cadena);
      
      if (PosiCont==-1)                         
        LisCont.getListaContrato().add(cont);  
                 
      else                                    
        LisCont.getListaContrato().set(PosiCont, cont); 
      
      Limpiar();
      Enabled(false);
      
      Mensajes.Aviso("Registro Exitoso", "");
            
 }
 
 //-------
    
 // Botones   
public void actionPerformed(ActionEvent e) 
    {
      if (e.getSource().equals(formContrato.getjButtonConsultar())) 
       {
          new ControladorConsulContrato(LisCont); 
       }   
    
       if (e.getSource().equals(formContrato.getjButtonSalir())) 
       {
          formContrato.dispose(); 
       }   
       
       if (e.getSource().equals(formContrato.getjButtonCancelar())) 
       {
          Limpiar(); 
          Enabled(false);
          Visible(false);
          
       }  
       
        if (e.getSource().equals(formContrato.getjButtonGrabar())) 
       {
         Grabar(); 
       }   
       

      }
    
    
}